Skip to content

Conversation

wickwirew
Copy link

@wickwirew wickwirew commented Sep 12, 2025

Fixes an issue in postgres when selecting from a function. It would silently fail and the output row type would just be a NullString. This was due to it not looking for a composite type from the return type. Also it was not generating structs for defined composite types.

Sort of addresses the following issues, both were closed but I dont think officially fixed, but this fix requires a composite return type:
#3638
#1322

Supporting RETURNS TABLE(...) may be a bit more complex. I don't think libpg_query even returns the data, I don't see it at least but I could be wrong. If it is going to be a known unsupported feature, I can emit a diagnostic saying to use a composite type at the call site if desired.

Supporting embedded structs is a bit odd, but possible. The function output needs to be aliased to the composite type name
❌ Does not work: SELECT sqlc.embed(function_name) FROM function_name()
✅ Works: SELECT sqlc.embed(type_name) FROM function_name() AS type_name

@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. 🔧 golang labels Sep 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size:XL This PR changes 500-999 lines, ignoring generated files. 🔧 golang
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant